#pragma once


#define Handler_AG_ZONE_DECL( p )			static VOID On##p( ServerSession * pServerSession, MSG_BASE * pMsg, WORD wSize )
#define Handler_AG_ZONE_IMPL( p )			VOID Handler_AG_ZONE::On##p( ServerSession * pServerSession, MSG_BASE * pMsg, WORD wSize )

class ServerSession;
struct MSG_BASE;

class Handler_AG_ZONE
{
public:
	Handler_AG_ZONE(void);
	~Handler_AG_ZONE(void);

	Handler_AG_ZONE_DECL( AG_ZONE_LOBBY_CREATE_CMD );
	Handler_AG_ZONE_DECL( AG_ZONE_HUNTING_CREATE_CMD );
	Handler_AG_ZONE_DECL( AG_ZONE_MISSION_CREATE_CMD );
	Handler_AG_ZONE_DECL( AG_ZONE_PVP_CREATE_CMD );
	Handler_AG_ZONE_DECL( AG_ZONE_VILLAGE_CREATE_CMD );

	Handler_AG_ZONE_DECL( AG_ZONE_ROOM_DESTROY_CMD );

	Handler_AG_ZONE_DECL( AG_ZONE_ROOM_JOIN_CMD );
	Handler_AG_ZONE_DECL( AG_ZONE_ROOM_JOIN_SYN );
	Handler_AG_ZONE_DECL( AG_ZONE_ROOM_LEAVE_CMD );
	Handler_AG_ZONE_DECL( AG_ZONE_ROOM_LEAVE_SYN );

	Handler_AG_ZONE_DECL( AG_ZONE_MASTER_CHANGED_CMD );
	Handler_AG_ZONE_DECL( AG_ZONE_PVP_INFO_CMD );
	Handler_AG_ZONE_DECL( AG_ZONE_VILLAGE_MOVE_SYN );
};
